/**
 * @file Tools.hpp
 * 
 * @brief 公用的函数
*/
#ifndef __TOOLS__
#define __TOOLS__

#include <cstdlib>
#include <iostream>

#include "Constant.hpp"

using namespace std;

// 控制光标位置
void setCursorXY(int x, int y);

// 移动到控制台左上角
void setCursorOrigin();

// 隐藏光标
void setCursorHide();

// 显示光标
void setCursorShow();

// 开启前景色背景色反转
void setReverseOn();

// 关闭前景色背景色反转
void setReverseOff();

/**
 * @enum DrawEffects
 * @brief 用或的方法设置绘图特效
 **/
enum DrawEffects{
    DRAW_NO_EFFECT = 0x0,
    DRAW_REVERSE_BACKFRONT = 0x1
};

/**
 * @function drawCharacter
 * @brief 输出一个字符，不换行，同时Y轴放大一定倍数
 * @param ch 输出的字符，包含字符、前景色、背景色的信息
 * @param scaleY Y方向放大倍率
 **/
void drawCharacter(CHARACTER ch, int scaleY = 2);

#endif